package com.liuyanzhao.blog.service;

import com.liuyanzhao.blog.entity.Comment;
import com.liuyanzhao.blog.entity.custom.CommentCustom;
import com.liuyanzhao.blog.entity.custom.CommentListVo;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 
 * @author Baokai Wang
 * 对评论表的操作
 * @CrateTime: 2019年6月23日
 */
@Service
public interface CommentService {
	/**
	 * 
	 * 添加评论
	 * @param request
	 * @param comment
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:37:56
	 */
	public void insertComment(HttpServletRequest request, Comment comment) throws Exception;
	
	/**
	 * 
	 * 根据文章id获取评论列表
	 * @param status
	 * @param articleId
	 * @return List<CommentCustom>
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:38:06
	 */
	public List<CommentCustom> listCommentByArticleId(Integer status,Integer articleId);

	/**
	 * 
	 * 根据id获取评论
	 * @param id
	 * @return CommentCustom
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:38:23
	 */
	public CommentCustom getCommentById(Integer id) throws Exception;

	/**
	 * 
	 * 获取所有评论列表
	 * @param status
	 * @param pageNow
	 * @param pageSize
	 * @return List<CommentListVo>
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:38:40
	 */
	public List<CommentListVo> listCommentByPage(Integer status, Integer pageNow, Integer pageSize) throws Exception;

	/**
	 * 
	 * 获得评论列表
	 * @param status
	 * @return List<CommentListVo>
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:39:00
	 */
	public List<CommentListVo> listCommentVo(Integer status) throws Exception;

	/**
	 * 
	 * 获得评论列表
	 * @param status
	 * @return List<CommentCustom>
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:39:16
	 */
	public List<CommentCustom> listComment(Integer status) throws Exception;

	/**
	 * 
	 * 删除评论
	 * @param id
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:39:41
	 */
	public void deleteComment(Integer id) throws Exception;

	/**
	 * 
	 * 修改评论
	 * @param comment
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:39:52
	 */
	public void updateComment(Comment comment) throws Exception;

	/**
	 * 
	 * 统计评论数
	 * @param status
	 * @return Integer
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:40:02
	 */
	public Integer countComment(Integer status) throws Exception;

	/**
	 * 
	 * 获得最近评论
	 * @param limit
	 * @return List<CommentListVo>
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:40:16
	 */
	public List<CommentListVo> listRecentComment(Integer limit) throws Exception;
	
	/**
	 * 
	 * 获得评论的子评论
	 * @param id
	 * @return List<Comment>
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 下午8:40:42
	 */
	public List<Comment> listChildComment(Integer id) throws Exception;


}
